<html>
<head><meta charset="utf-8"><title>Table Memory Usage · t-compiler/rust-analyzer · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/index.html">t-compiler/rust-analyzer</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html">Table Memory Usage</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="204683343"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204683343" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204683343">(Jul 22 2020 at 15:42)</a>:</h4>
<p><span class="user-mention" data-user-id="211727">@Jonas Schievink</span> did a quick patch to drop salsa's tables to see how much space those occupy. That accounts for 200 mb of unaccounted for space:</p>
<p><a href="https://gist.github.com/matklad/adac544d39b540f90c83c7169b1caa46">https://gist.github.com/matklad/adac544d39b540f90c83c7169b1caa46</a></p>



<a name="204683571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204683571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204683571">(Jul 22 2020 at 15:44)</a>:</h4>
<p>Oof</p>



<a name="204683590"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204683590" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204683590">(Jul 22 2020 at 15:44)</a>:</h4>
<p>Not unexpected though</p>



<a name="204683801"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204683801" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204683801">(Jul 22 2020 at 15:45)</a>:</h4>
<p>What if we <em>just</em> collect slot keys instead of the entire map? As in, what <a href="https://github.com/salsa-rs/salsa/pull/196">https://github.com/salsa-rs/salsa/pull/196</a> does.<br>
Or is that already how things work on master? I forgot.</p>



<a name="204684648"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204684648" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204684648">(Jul 22 2020 at 15:51)</a>:</h4>
<p>I think if we can just collect slots with rc=1</p>



<a name="204684717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204684717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204684717">(Jul 22 2020 at 15:52)</a>:</h4>
<p>Hm, or is it a bad idea due to slots being re-used...</p>



<a name="204684784"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204684784" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204684784">(Jul 22 2020 at 15:52)</a>:</h4>
<p>s/re-used/referenced to from many tables/</p>



<a name="204691449"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204691449" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204691449">(Jul 22 2020 at 16:46)</a>:</h4>
<ul>
<li><a href="https://github.com/salsa-rs/salsa/pull/240">https://github.com/salsa-rs/salsa/pull/240</a></li>
<li><a href="https://github.com/rust-analyzer/rust-analyzer/pull/5494">https://github.com/rust-analyzer/rust-analyzer/pull/5494</a></li>
</ul>



<a name="204691596"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204691596" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204691596">(Jul 22 2020 at 16:47)</a>:</h4>
<p>This also clears <code>input</code> memory, so we finally see all the things</p>



<a name="204691601"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204691601" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204691601">(Jul 22 2020 at 16:47)</a>:</h4>
<p><a href="https://gist.github.com/matklad/d738eedb04152a96c957f3d341400306">https://gist.github.com/matklad/d738eedb04152a96c957f3d341400306</a></p>



<a name="204691827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204691827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204691827">(Jul 22 2020 at 16:49)</a>:</h4>
<p>Cool!</p>



<a name="204691891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204691891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204691891">(Jul 22 2020 at 16:50)</a>:</h4>
<p>Heh, I am forgetting that <code>sweep</code> thing is intended for real garbage collection and not for, you know, measuring memory :D</p>



<a name="204692119"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204692119" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204692119">(Jul 22 2020 at 16:52)</a>:</h4>
<p>Is <code>MacroArgQuery</code> supposed to be that large?</p>



<a name="204692275"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204692275" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204692275">(Jul 22 2020 at 16:53)</a>:</h4>
<p>I think we could make it more compact, but, in general, it will be large</p>



<a name="204692309"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204692309" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204692309">(Jul 22 2020 at 16:53)</a>:</h4>
<p>as in, a lot of code is generated by macros,</p>



<a name="204692391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204692391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204692391">(Jul 22 2020 at 16:54)</a>:</h4>
<p>It looks like it's a token tree representation of the macro parameters?</p>



<a name="204692408"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204692408" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204692408">(Jul 22 2020 at 16:54)</a>:</h4>
<p>(as opposed to macro-generated code)</p>



<a name="204692427"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204692427" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204692427">(Jul 22 2020 at 16:54)</a>:</h4>
<p>yes</p>



<a name="204692712"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204692712" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204692712">(Jul 22 2020 at 16:57)</a>:</h4>
<p>And it's worth caching it instead of computing it on the fly (since we also store the macro expansion result)?</p>



<a name="204692772"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204692772" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204692772">(Jul 22 2020 at 16:57)</a>:</h4>
<p>It is worth caching because it's a firewall</p>



<a name="204692793"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204692793" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204692793">(Jul 22 2020 at 16:57)</a>:</h4>
<p>Most syntax changes leave macro args in place</p>



<a name="204692901"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204692901" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204692901">(Jul 22 2020 at 16:58)</a>:</h4>
<p>though, these all shold be rechecked, I expect ItemTree work might have changed the calculus here</p>



<a name="204693050"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204693050" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204693050">(Jul 22 2020 at 16:59)</a>:</h4>
<p>Hm....</p>



<a name="204693075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204693075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204693075">(Jul 22 2020 at 16:59)</a>:</h4>
<p>I think I see something which makes zero sense to me</p>



<a name="204693095"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204693095" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204693095">(Jul 22 2020 at 16:59)</a>:</h4>
<div class="codehilite"><pre><span></span><code>   252mb ItemTreeQuery
   121mb CrateDefMapQueryQuery
    59mb BodyQuery
    38mb InferQueryQuery
</code></pre></div>



<a name="204693147"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204693147" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204693147">(Jul 22 2020 at 17:00)</a>:</h4>
<p>It's unreasonable that body data occupies less space then top-level data</p>



<a name="204694354"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204694354" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204694354">(Jul 22 2020 at 17:09)</a>:</h4>
<p>Indeed <span aria-label="thinking" class="emoji emoji-1f914" role="img" title="thinking">:thinking:</span></p>



<a name="204694964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204694964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204694964">(Jul 22 2020 at 17:14)</a>:</h4>
<p>note that this is without <code>--with-deps</code>, but still</p>



<a name="204695339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204695339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204695339">(Jul 22 2020 at 17:17)</a>:</h4>
<p>Hmm, in that case my expectation is:</p>
<ul>
<li>You get <code>ItemTree</code>s for all files in all dependencies, and for all item-level macro files too =&gt; big</li>
<li>You get <code>CrateDefMap</code>s for all dependencies, which always contain private items too (and also the known issue around duplicating glob imported items) =&gt; big</li>
</ul>
<p>So maybe this makes sense?</p>



<a name="204697132"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204697132" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204697132">(Jul 22 2020 at 17:30)</a>:</h4>
<p>A bit, for smaller crates with with deps the ordering is right, but the order of magnitude seems wrong (2x difference or something)</p>



<a name="204697189"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204697189" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204697189">(Jul 22 2020 at 17:30)</a>:</h4>
<p>this definitelly worth looking into and explaining</p>



<a name="204700966"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204700966" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204700966">(Jul 22 2020 at 18:03)</a>:</h4>
<p><span class="user-mention silent" data-user-id="133169">matklad</span> <a href="#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Table.20Memory.20Usage/near/204692793">said</a>:</p>
<blockquote>
<p>Most syntax changes leave macro args in place</p>
</blockquote>
<p>Could we track only the text instead? So we don't cache the tt (but recompute it when needed) and cache only the text and the expansion.</p>



<a name="204701560"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204701560" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204701560">(Jul 22 2020 at 18:08)</a>:</h4>
<p>That sounds like an excellent idea!</p>



<a name="204702081"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204702081" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204702081">(Jul 22 2020 at 18:12)</a>:</h4>
<p>How would that work? A new <code>macro_arg_syntax</code> query that returns the <code>SyntaxNode</code> and a <code>#[transparent]</code> <code>macro_arg_tt</code> that does the conversion?</p>



<a name="204704211"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204704211" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204704211">(Jul 22 2020 at 18:29)</a>:</h4>
<p>Hmm, that doesn't seem to work, something about <code>SyntaxNode</code> not being <code>Send</code> (but I put it in an <code>Arc</code>, so dunno)</p>



<a name="204704352"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204704352" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204704352">(Jul 22 2020 at 18:30)</a>:</h4>
<p>you can use <code>GreenNode</code> instead of <code>SyntaxNode</code></p>



<a name="204704381"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204704381" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204704381">(Jul 22 2020 at 18:30)</a>:</h4>
<p><code>SyntaxNode</code>s are thread local</p>



<a name="204704508"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204704508" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204704508">(Jul 22 2020 at 18:31)</a>:</h4>
<p>So <code>SyntaxNode::green</code>? But that returns a reference, so..</p>



<a name="204704552"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204704552" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204704552">(Jul 22 2020 at 18:31)</a>:</h4>
<p>.clone</p>



<a name="204704634"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204704634" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204704634">(Jul 22 2020 at 18:32)</a>:</h4>
<p>And it's private</p>



<a name="204705266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204705266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204705266">(Jul 22 2020 at 18:36)</a>:</h4>
<p>Well, let's see</p>



<a name="204705759"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204705759" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204705759">(Jul 22 2020 at 18:41)</a>:</h4>
<div class="codehilite"><pre><span></span><code>   186mb MacroArgQuery
    60mb MacroArgSyntaxQuery
</code></pre></div>



<a name="204706466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204706466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204706466">(Jul 22 2020 at 18:46)</a>:</h4>
<div class="codehilite"><pre><span></span><code>Item Collection: 18.076997307s, 829mb allocated 0b resident
Total expressions: 187802
Expressions of unknown type: 1480 (0%)
Expressions of partially unknown type: 700 (0%)
Type mismatches: 466
Inference: 24.968460198s, 1430mb allocated 0b resident
Total: 43.045673099s, 1430mb allocated 0b resident

Item Collection: 18.373088111s, 658mb allocated 0b resident
Total expressions: 187798
Expressions of unknown type: 1480 (0%)
Expressions of partially unknown type: 700 (0%)
Type mismatches: 466
Inference: 25.376398801s, 1234mb allocated 0b resident
Total: 43.74958371s, 1234mb allocated 0b resident
</code></pre></div>



<a name="204706510"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204706510" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204706510">(Jul 22 2020 at 18:47)</a>:</h4>
<p>I guess it works?</p>



<a name="204706760"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204706760" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204706760">(Jul 22 2020 at 18:49)</a>:</h4>
<p>Nice!</p>



<a name="204797351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204797351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204797351">(Jul 23 2020 at 13:34)</a>:</h4>
<p>Idle thought: unresolved items (which store paths) should be heavier than resolved items (which store ids), because a path is a path, and an id is u32. </p>
<p>I wonder if we need one-step macro expansion and name resolution lowring step. And whether that would hit cyclic queries, where, to resolve associated types, you'd invoke type inference machinery which needs lowred impls...</p>



<a name="204802283"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204802283" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Florian Diebold <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204802283">(Jul 23 2020 at 14:13)</a>:</h4>
<p>resolving associated types is a separate step</p>



<a name="204803090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204803090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204803090">(Jul 23 2020 at 14:19)</a>:</h4>
<p>Well yes, that's exactly the issue. </p>
<p>Like, I imagine that we'd want to lower <code>Self::Item</code> to something which is infailable, and not to a type &amp; <code>Name</code> pair.</p>



<a name="204803167"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204803167" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204803167">(Jul 23 2020 at 14:19)</a>:</h4>
<p>I mean, lower in a single step, from ItemTree straight to "we know everything is it to know, except fro child items"</p>



<a name="204804957"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204804957" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Florian Diebold <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204804957">(Jul 23 2020 at 14:32)</a>:</h4>
<p>well, it needs to be lowered to <code>&lt;Self as SomeTrait&gt;::Item</code>, but that doesn't need type inference</p>



<a name="204806420"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204806420" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204806420">(Jul 23 2020 at 14:42)</a>:</h4>
<p>Where <code>SomeTrair</code> and <code>Item</code> are ids, right?</p>



<a name="204806486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204806486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204806486">(Jul 23 2020 at 14:43)</a>:</h4>
<p>Hm, I guess that makes sense, <code>Foo::Bar::Baz</code> paths are forbidden without disambiguation</p>



<a name="204806522"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204806522" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204806522">(Jul 23 2020 at 14:43)</a>:</h4>
<p>This makes the idea slightly more realizable...</p>



<a name="204820456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204820456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Florian Diebold <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204820456">(Jul 23 2020 at 16:29)</a>:</h4>
<p>yes</p>



<a name="204820478"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204820478" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Florian Diebold <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204820478">(Jul 23 2020 at 16:29)</a>:</h4>
<p>and it's just based on the where clauses in scope</p>



<a name="204820562"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204820562" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Florian Diebold <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204820562">(Jul 23 2020 at 16:30)</a>:</h4>
<p>that's basically what happens during lowering to HIR in rustc as well, as I understand it</p>



<a name="204820846"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204820846" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204820846">(Jul 23 2020 at 16:32)</a>:</h4>
<p>Uhu. I think we'll need to be careful with laziness here, but I think a simple rule like "child <em>names</em> are lowered with parent, children are lowered lazy" should work</p>



<a name="204820888"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204820888" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204820888">(Jul 23 2020 at 16:32)</a>:</h4>
<p>Ie, we should know functions names in impls, but not necessary functions</p>



<a name="204894367"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204894367" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204894367">(Jul 24 2020 at 09:16)</a>:</h4>
<blockquote>
<p>Could we track only the text instead? So we don't cache the tt (but recompute it when needed) and cache only the text and the expansion.</p>
</blockquote>
<p>It's interesting that the PR doesn't do exactly that -- it uses green trees, and not token trees. I <em>think</em> memory savings come from the fact that green trees deduplicate nodes, which token trees can't do, because they have identities.</p>



<a name="204894388"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204894388" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204894388">(Jul 24 2020 at 09:16)</a>:</h4>
<p>Which invites an interesting question -- do we actually <strong>need</strong> token identities?</p>



<a name="204894418"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204894418" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204894418">(Jul 24 2020 at 09:17)</a>:</h4>
<p>We were caching token trees before, now we're only caching green nodes (text?) and computing the token trees right before macro expansion.</p>



<a name="204894501"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204894501" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204894501">(Jul 24 2020 at 09:18)</a>:</h4>
<p>But I see your point about green nodes not being necessarily smaller than token trees</p>



<a name="204894584"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204894584" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204894584">(Jul 24 2020 at 09:19)</a>:</h4>
<p>Still, 60 MB is a lot. Are you sure that storing the text wouldn't be better?</p>



<a name="204894604"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204894604" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204894604">(Jul 24 2020 at 09:19)</a>:</h4>
<blockquote>
<p>We were caching token trees before, now we're only caching green nodes (text?) and computing the token trees right before macro expansion.</p>
</blockquote>
<p>Exactly, we <em>replaced</em> token trees with green trees. Naively, I'd expect that to have little impact on perf (as both are essentially the same tree structure). I <em>think</em> the diff is due to deduplication of green nodes</p>



<a name="204894653"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204894653" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204894653">(Jul 24 2020 at 09:20)</a>:</h4>
<p>Text would be better, yeah</p>



<a name="204894690"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204894690" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204894690">(Jul 24 2020 at 09:20)</a>:</h4>
<p>So, I wonder if we can change the repr of token trees to place hygine info on subtrees in a sidetable, and have nodes in a subtree be identified using only position (w deduplication)</p>



<a name="204894977"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204894977" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Laurențiu <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204894977">(Jul 24 2020 at 09:24)</a>:</h4>
<p><span class="user-mention silent" data-user-id="133169">matklad</span> <a href="#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Table.20Memory.20Usage/near/204894653">said</a>:</p>
<blockquote>
<p>Text would be better, yeah</p>
</blockquote>
<p>Um, how do I parse the text into a <code>SyntaxNode</code>? That feels a bit wrong.</p>



<a name="204895161"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204895161" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204895161">(Jul 24 2020 at 09:26)</a>:</h4>
<p>It might even be impossible</p>



<a name="204895170"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/204895170" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#204895170">(Jul 24 2020 at 09:26)</a>:</h4>
<p>For recursive macro expansions, there's no text</p>



<a name="206023987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/185405-t-compiler/rust-analyzer/topic/Table%20Memory%20Usage/near/206023987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/185405-t-compiler/rust-analyzer/topic/Table.20Memory.20Usage.html#206023987">(Aug 05 2020 at 13:50)</a>:</h4>
<p>Latests results (without memory unnacounted for): <a href="https://github.com/rust-analyzer/rust-analyzer/pull/5494#issuecomment-669204979">https://github.com/rust-analyzer/rust-analyzer/pull/5494#issuecomment-669204979</a></p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>